//
//  ViewController.swift
//  TestMath
//
//  Created by Domino on 2019/3/27.
//  Copyright © 2019 Domino. All rights reserved.
//

import UIKit
import WebKit

class ViewController: UIViewController {
	
	var webView: WKWebView!
	@IBOutlet weak var questionLb: UILabel!
	@IBOutlet weak var answerTF: UITextField!
	
	var mathModels = [MathModel]()
	var currentModelIndex: Int = 0
	
	override func viewDidLoad() {
		super.viewDidLoad()
		
		webView = WKWebView.init()
		let request = URLRequest.init(url: URL.init(string: "https://zhoushuai1996.github.io/MathHTML")!)
		webView.load(request)
		webView.uiDelegate = self
		webView.navigationDelegate = self
		
		
	}
	
	
	@IBAction func numberPadClick(_ sender: UIButton) {
		
	}
	
	@IBAction func nextQuestion(_ sender: UIButton) {
		currentModelIndex += 1
		self.questionLb.text = self.mathModels[self.currentModelIndex].questionName
		answerTF.text = self.mathModels[self.currentModelIndex].result ?? ""
	}
	
	@IBAction func clearTheAnswer(_ sender: UIButton) {
		answerTF.text = ""
	}
	
}

extension ViewController: WKNavigationDelegate, WKUIDelegate {
	
	
	func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
		
	}
	
	
	
	
	
	func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
		
		
		//		count: 100,			//生成题目数量
		//		pagerows: 25,
		//		cols: 4,
		//
		//		strategy: 'random',
		//		diff_operator_adjacent: false,
		//		dissimilarity_operator_adjacent: true,
		//
		//		isadd: true,				//是否加号可用
		//		issub: true,				//是否减号可用
		//		ismul: true,				//是否乘号可用
		//		isdiv: true,				//是否除号可用
		
		//		rule: '1',
		//		whichcond: '',
		//		exact_parentheses: false,
		//		parentheses: {
		//			autofix: true,
		//			enabled: false,
		//			min: 0,
		//			max: 0
		//		},
		//		// 是否生成带括号的题
		//
		//		itemcount: 0,			//运算项个数    2：1+2   3： 1+2+3 ...
		//
		//		// 符号
		//		range_op: [],
		//
		//		// 加法
		//		defrange_add: [{
		//		min: 0,
		//		max: 100
		//		}, {
		//		min: 0,
		//		max: 100
		//		}],
		//		result_add: {
		//			min: 0,
		//			max: 200
		//		},
		//		range_add: [],
		//
		//		// 减法
		//		defrange_sub: [{
		//		min: 0,
		//		max: 200
		//		}, {
		//		min: 0,
		//		max: 100
		//		}],
		//		result_sub: {
		//			min: 0,
		//			max: 100
		//		},
		//		range_sub: [],
		//
		//		// 乘法
		//		defrange_mul: [{
		//		min: 0,
		//		max: 9
		//		}, {
		//		min: 0,
		//		max: 9
		//		}],
		//		result_mul: {
		//			min: 4,
		//			max: 81
		//		},
		//		range_mul: [],
		//
		//		// 除法
		//		defrange_div: [{
		//		min: 0,
		//		max: 81
		//		}, {
		//		min: 1,
		//		max: 9
		//		}],
		//		result_div: {
		//			min: 2,
		//			max: 9
		//		},
		//		range_div: [],
		//
		//		fontsize: 12,
		//		fontfamily: '宋体',
		//		cellPadding: 2,
		//		cellSpacing: 5,
		//		res: [],					//运算结果
		//		appendemptyrows: false,
		//		report: {
		//			total: 0,
		//			addcnt: 0,
		//			// 加法题数量
		//			subcnt: 0,
		//			// 减法题数量
		//			mulcnt: 0,
		//			//乘法题数量
		//			divcnt: 0,
		//			//除法题数量
		//			exceptcnt: 0 // 异常题数量(由于冲突，未能按规则生成)
		//		}
		
		
		//设置生成题目数量  最大1000
		webView.evaluateJavaScript("app.count=50") { (response, error) in
			print(response)
			print(error)
		}
		
		webView.evaluateJavaScript("app.rule=18") { (response, error) in
			print(response)
			print(error)
		}
		
		//符号处理  可以单独生成 +   -  *  / 运算 只需改变其对应bool值即可
		webView.evaluateJavaScript("app.isadd=true;app.issub=true;app.ismul=true;app.isdiv=true") { (response, error) in
			print(response)
			print(error)
		}
		
		//处理算数个数
		//		webView.evaluateJavaScript("app.itemcount=3") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		
		//		webView.evaluateJavaScript("app.defrange_add=[{min: 0, max: 50}, {min: 0, max: 50}],app.result_add={min: 0, max: 100}") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		//		webView.evaluateJavaScript("app.defrange_add[1].min=0") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		//		webView.evaluateJavaScript("app.defrange_add[1].max=50") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		//		webView.evaluateJavaScript("app.result_add.min=0") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		//		webView.evaluateJavaScript("app.result_add.max=100") { (response, error) in
		//			print(response)
		//			print(error)
		//		}
		
		
		
		//生成题目和答案数据
		webView.evaluateJavaScript("app.doGen()") { (response, error) in
			//			print(response)
			//			print(error)
		}
		
		//获取生成的题目与a答案数据
		webView.evaluateJavaScript("app.res") { (response, error) in
			print(response)
			if let dataArray = response as? NSArray {
				for dic in dataArray {
					if let dict = dic as? NSDictionary {
						if let ietmArray = dict["item"] as? NSArray {
							if ietmArray.count > 0 {
								let model = MathModel.model(withJSON: ietmArray[0])
								self.getQuestions(model!, itemArray: ietmArray)
							}
						}
					}
				}
			}
		}
		
	}
	
	//题目数据处理
	func getQuestions(_ model: MathModel, itemArray: NSArray ) {
		let data = try! JSONSerialization.data(withJSONObject: itemArray, options: JSONSerialization.WritingOptions.prettyPrinted)
		var str = String.init(data: data, encoding: String.Encoding.utf8)
		str = str?.replacingOccurrences(of: " ", with: "")
		str = str?.replacingOccurrences(of: "\n", with: "")
		str = str?.replacingOccurrences(of: "\\", with: "")
		webView.evaluateJavaScript("app.formulaToString(\(str!))") { (response, error) in
			if let string = response as? String {
				let str = string.replacingOccurrences(of: "_", with: "")
				model.questionName = str
				self.mathModels.append(model)
				self.questionLb.text = self.mathModels[self.currentModelIndex].questionName
			}
		}
	}
}

extension ViewController: WKScriptMessageHandler {
	func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
		
	}
}

